﻿using System;
using System.Collections;
using Castle.MonoRail.Framework;
using CoopSaude.DAO;
using CoopSaude.SCEMReference;

namespace CoopSaude.Controllers
{
    [ControllerDetails(Area = "Estoque")]
    [DefaultAction("Listar")]
    public class FornecedoresController : BaseController
    {
        #region Actions
        public void Listar()
        {
            try
            {
                PropertyBag["listaFornecedores"] = ScemDAO.listarFornecedores(1, 1000, false);
            }
            catch (Exception e)
            {
                Flash["erro"] = "Ocorreu um erro ao acessar o serviço";
            }
            this.MenuUtilizado = "estoque";
            this.SecaoUtilizada = "fornecedores";
            this.AcaoUtilizada = "listar";
        }

        public void Adicionar()
        {
            PropertyBag["fornecedor_codigo"] = Params["fornecedor_codigo"];
            PropertyBag["fornecedor_cep"] = Params["fornecedor_cep"];
            PropertyBag["fornecedor_cidade"] = Params["fornecedor_cidade"];
            PropertyBag["fornecedor_cnpj"] = Params["fornecedor_cnpj"];
            PropertyBag["fornecedor_email"] = Params["fornecedor_email"];
            PropertyBag["fornecedor_endereco"] = Params["fornecedor_endereco"];
            PropertyBag["fornecedor_nome"] = Params["fornecedor_nome"];
            PropertyBag["fornecedor_representante"] = Params["fornecedor_representante"];
            PropertyBag["fornecedor_razao"] = Params["fornecedor_razao"];
            PropertyBag["fornecedor_telefone1"] = Params["fornecedor_telefone1"];
            PropertyBag["fornecedor_telefone2"] = Params["fornecedor_telefone2"];
            PropertyBag["fornecedor_pais"] = Params["fornecedor_pais"];
            this.MenuUtilizado = "estoque";
            this.SecaoUtilizada = "fornecedores";
            this.AcaoUtilizada = "adicionar";
        }

        public void Criar()
        {
            this.MenuUtilizado = "estoque";
            this.SecaoUtilizada = "fornecedores";
            this.AcaoUtilizada = "adicionar";
            try
            {
                if (Params["fornecedor_codigo"].ToString().Equals("") ||
                    Params["fornecedor_nome"].ToString().Equals("") 
                    )
                {

                    Flash["erro"] = "Voce precisa preencher todos os campos.";
                    RenderView("adicionar");
                }
                else {
                    FornecedorDTO fornecedor = new FornecedorDTO();
                    fornecedor.Codigo = Params["fornecedor_codigo"].ToString().Trim();
                    fornecedor.EmailRepresentante = Params["fornecedor_email"].ToString().Trim();
                    fornecedor.NomeFantasia = Params["fornecedor_nome"].ToString().Trim();
                    fornecedor.NomeRepresentante = Params["fornecedor_representante"].ToString().Trim();
                    /*
                    fornecedor.Endereco = Params["fornecedor_endereco"].ToString().Trim();
                    fornecedor.CEP = Params["fornecedor_cep"].ToString().Trim();
                    fornecedor.Cidade = Params["fornecedor_cidade"].ToString().Trim();
                    fornecedor.CNPJ = Params["fornecedor_cnpj"].ToString().Trim();
                    fornecedor.RazaoSocial = Params["fornecedor_razao"].ToString().Trim();
                    fornecedor.Telefone1 = Params["fornecedor_telefone1"].ToString().Trim();
                    fornecedor.Telefone2 = Params["fornecedor_telefone2"].ToString().Trim();
                     * */
                    fornecedor.CNPJ = "CNPJ 1";
                    fornecedor.RazaoSocial = "Razao Social 1";
                    fornecedor.CEP = "CEP 1";
                    fornecedor.Endereco = "Endereco 1";
                    fornecedor.Cidade = "Cidade 1";
                    fornecedor.Pais = "Pais 1";
                    fornecedor.Telefone1 = "Telefone 1";
                    fornecedor.Telefone2 = "Telefone 2";
                    fornecedor = ScemDAO.adicionarFornecedor(fornecedor);
                    Flash["sucesso"] = "Fornecedor adicionado com sucesso";
                    RedirectToAction("listar");
                }
            }
            catch (Exception ex)
            {

                Flash["erro"] ="Ecorreu um erro ao salvar o fornecedor durante a conexão com o banco de dados.";
                RenderView("adicionar");
            }
        }
        public void Editar()
        {
            try
            {
                FornecedorDTO fornecedor = ScemDAO.obterFornecedor(Params["idFornecedor"]);
                PropertyBag["fornecedor_codigo"] = fornecedor.Codigo;
                PropertyBag["fornecedor_id"] = fornecedor.Id;
                PropertyBag["fornecedor_cep"] = fornecedor.CEP;
                PropertyBag["fornecedor_cidade"] = fornecedor.Cidade;
                PropertyBag["fornecedor_cnpj"] = fornecedor.CNPJ;
                PropertyBag["fornecedor_email"] = fornecedor.EmailRepresentante;
                PropertyBag["fornecedor_endereco"] = fornecedor.Endereco;
                PropertyBag["fornecedor_nome"] = fornecedor.NomeFantasia;
                PropertyBag["fornecedor_representante"] = fornecedor.NomeRepresentante;
                PropertyBag["fornecedor_razao"] = fornecedor.RazaoSocial;
                PropertyBag["fornecedor_telefone1"] = fornecedor.Telefone1;
                PropertyBag["fornecedor_telefone2"] = fornecedor.Telefone2;
                PropertyBag["fornecedor_pais"] = Params["fornecedor_pais"];
                this.MenuUtilizado = "estoque";
                this.SecaoUtilizada = "fornecedores";
                this.AcaoUtilizada = "editar";
            }
            catch (Exception ex)
            {

                Flash["erro"] = "Ecorreu um erro ao recuperar o fornecedor";
                RedirectToAction("listar");
            }
        }

        public void Atualizar()
        {
            this.MenuUtilizado = "estoque";
            this.SecaoUtilizada = "fornecedores";
            this.AcaoUtilizada = "editar";
            try
            {
                if (Params["fornecedor_codigo"].ToString().Equals("") ||
                    Params["fornecedor_nome"].ToString().Equals("")
                    )
                {

                    Flash["erro"] = "Voce precisa preencher todos os campos.";
                    RenderView("editar");
                }
                else
                {
                    FornecedorDTO fornecedor = ScemDAO.obterFornecedor(Params["fornecedor_id"]);
                    if (fornecedor != null)
                    {
                        fornecedor.Codigo = Params["fornecedor_codigo"].ToString().Trim();
                        fornecedor.EmailRepresentante = Params["fornecedor_email"].ToString().Trim();
                        fornecedor.NomeFantasia = Params["fornecedor_nome"].ToString().Trim();
                        fornecedor.NomeRepresentante = Params["fornecedor_representante"].ToString().Trim();
                        /*
                        fornecedor.Endereco = Params["fornecedor_endereco"].ToString().Trim();
                        fornecedor.CEP = Params["fornecedor_cep"].ToString().Trim();
                        fornecedor.Cidade = Params["fornecedor_cidade"].ToString().Trim();
                        fornecedor.CNPJ = Params["fornecedor_cnpj"].ToString().Trim();
                        fornecedor.RazaoSocial = Params["fornecedor_razao"].ToString().Trim();
                        fornecedor.Telefone1 = Params["fornecedor_telefone1"].ToString().Trim();
                        fornecedor.Telefone2 = Params["fornecedor_telefone2"].ToString().Trim();
                         * */
                        fornecedor.CNPJ = "CNPJ 1";
                        fornecedor.RazaoSocial = "Razao Social 1";
                        fornecedor.CEP = "CEP 1";
                        fornecedor.Endereco = "Endereco 1";
                        fornecedor.Cidade = "Cidade 1";
                        fornecedor.Pais = "Pais 1";
                        fornecedor.Telefone1 = "Telefone 1";
                        fornecedor.Telefone2 = "Telefone 2";
                        fornecedor = ScemDAO.atualizarFornecedor(fornecedor);
                        Flash["sucesso"] = "Fornecedor editado com sucesso";
                    } else {
                        Flash["sucesso"] = "Fornecedor não encontrado";
                    }
                        RedirectToAction("listar");
                }
            }
            catch (Exception ex)
            {

                Flash["erro"] = "Ecorreu um erro ao salvar o fornecedor durante a conexão com o banco de dados.";
                RenderView("editar");
            }
        }

        public void Detalhes()
        {
            try
            {
                FornecedorDTO fornecedor = ScemDAO.obterFornecedor(Params["idFornecedor"]);
                PropertyBag["fornecedor_codigo"] = fornecedor.Codigo;
                this.MenuUtilizado = "estoque";
                this.SecaoUtilizada = "fornecedores";
                this.AcaoUtilizada = "detalhes";
            }
            catch (Exception ex)
            {

                Flash["erro"] = "Ecorreu um erro ao recuperar o fornecedor";
                RedirectToAction("listar");
            }
        }

        public void Desativar()
        {
            try
            {
                ScemDAO.desativarFornecedor(Params["idFornecedor"].ToString());
                Flash["sucesso"] = "Fornecedor desativado com sucesso.";
                RedirectToAction("listar");
            }
            catch (Exception ex)
            {

                Flash["error"] = "Ocorreu um erro ao excluir o fornecedor durante a conexão com o banco de dados.";
                RedirectToAction("listar");
            }
        }

        public void Comprar()
        {
        }
        #endregion Actions
    }
}
